package com.java.common.base.service.impl;

import java.io.Serializable;

import com.java.common.base.dao.BaseDao;
import com.java.common.base.service.BaseService;
/**
 * Title:DefaultBaseService<br>
 * Description:<br>
 * Company: IBM<br>
 * Copyright @ 2012 .All rights reserved. <br>
 * @author Liuhl<br>
 * @version 2011-6-19 1.0
 */
public abstract class DefaultBaseService<T, PK extends Serializable> implements BaseService<T, PK> {

	/**
	 * 为DefaultBaseService中的BaseDao设置实际引用的对象
	 * @return
	 */
	abstract protected BaseDao<T,PK> getBaseDao();

	/**
	 * 单条记录增加
	 *
	 * @param model
	 * @return
	 */
	public PK save(T model){
		return getBaseDao().save(model);
	}
	/**
	 * 单条记录删除
	 * @param model
	 */
	public void delete(T model){
		getBaseDao().delete(model);
	}
	/**
	 * 单条记录更新
	 *
	 * @param model
	 */
	public void update(T model){
		getBaseDao().update(model);
	}
	/**
	 * 单条记录保存或者更新
	 *
	 * @param model
	 */
	public void saveOrUpdate(T model){
		getBaseDao().saveOrUpdate(model);
	}
	/**
	 * 单条记录合并
	 *
	 * @param model
	 */
	public void merge(T model){
		getBaseDao().merge(model);
	}
	/**
	 * 根据主键查询单条记录
	 * @param id
	 * @return
	 */
	public T get(PK id){
		return getBaseDao().get(id);
	}
	/**
	 * 根据ID批量删除
	 * @param ids
	 */
	public void delete(PK[] ids){
		getBaseDao().delete(ids);
	}
	
	/**
	 * 根据 排除的id集合删除对象
	 * 对象的主键必须命名为整形id
	 * @param ids
	 */
	public void deleteModelById(PK[] ids){
		//getBaseDao().deleteModelById((Integer[])ids);
	}	
}